实验吧_后台登录

  第一个CTF题!
  题目链接:http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php
  思路:应该算是一个经验题吧,没做过的很难获取flag。
  一般思路是按F12看源码,关键源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<div style="position:relative;margin:0 auto;width:300px;height:200px;padding-top:100px;font-size:20px;">
<form action="" method="post">
<table>
<tr>
请用管理员密码进行登录~~
</tr>
<tr>
<td>密码:</td><td><input type="text" name='password'></td>
</tr>
<tr>
<td><input type="submit" name='submit' style="margin-left:30px;"></td>
</tr>
</table>
</form>
 </div>
<!-- $password=$_POST['password'];
$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
$result=mysqli_query($link,$sql);
if(mysqli_num_rows($result)>0){
echo 'flag is :'.$flag;
}
else{
echo '密码错误!';
} -->

可以直接看到php代码,能够看出只要sql语句能够查到东西就能获取到flag,所以可以用sql注入,
如果输入的是 ‘or’<某个真值> 就能达到目的了,关键在于md5($password,true),首先对输入的东西进行MD5加密,
所以得找到一个字符串,md5加密之后是想要的字符。
而地址栏中的“ffifdyop”md5加密之后是”276f722736c95d99e921722cf9ed621c”(十六进制显示),这个十六进制串可以在http://www.5ixuexiwang.com/str/from-hex.php
转成字符串 ‘or’6É]™é!r,ùíb ,前面有’or’就够了,后面一串垃圾值就代表一个真值。
另:
md5(string,raw)
string  必需。规定要计算的字符串。
raw    可选。规定十六进制或二进制输出格式:
    TRUE - 原始 16 字符二进制格式
    FALSE - 默认。32 字符十六进制数

欢迎与我分享你的看法。
转载请注明出处:http://taowusheng.cn/